{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 编写一个类似于加速度计的函数\n",
    "在该 notebook 中，你将定义自己的`get_derivative_from_data`函数，并使用它来区分位置数据ONCE，从而获取速度信息，然后再获取加速度信息。\n",
    "\n",
    "在第1部分中，我将对此过程进行演示，然后在第2部分中你需要亲自尝试实现该函数。\n",
    "\n",
    "-----\n",
    "\n",
    "## 第1部分 - 提醒事项与过程示范"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# run this cell for required imports\n",
    "\n",
    "from helpers import process_data\n",
    "from helpers import get_derivative_from_data as solution_derivative\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEWCAYAAABmE+CbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xm8lWW5//HPl8EgUMjAVBDRNK2jJkVZBxscSpuUrIOZNthgndIyy36YZTYdSU+ZTadMPWlqyTGHykpTU9MyBcEhTUvFGDRx2CpCuoHr98fzLHjYrOFZ8/R9v17rxRqf51p7b9a97vu67+tWRGBmZjas3QGYmVlncINgZmaAGwQzM0u5QTAzM8ANgpmZpdwgmJkZ4AbB6iBpiqQVkoaXec4KSdu3Mq5qSTpR0rlNOvaPJX21zmN8TtIZjYqp2ST9QNIX2h2HVW9EuwOw1pG0CHgBsAZ4Gvg1cFRErKjleBHxD2Bs5vjXAOdGxBmZ54wt8tKuIGkS8ACwU0TcO+Sxi4F7I+IzzY4jIv4rc96pwP3AyIhY3exzDyVpCnBn5q4xwEqgsKDpTRHx0VbHZY3hHkL/eVv6If0y4BXA59scT8eKiKXAVcB7svdL2hx4M3B2O+Jqp4j4R0SMLVzSu1+aue8PbQ3Q6uIGoU+lH3a/AXYBkLS1pF9IekzS3yV9uPBcSa+UNE/Sk5L+Kemb6f1TJYWkEZK+BrwG+G46TPTd9DkhaYf0+jhJ50haLukBSZ+XNCx97P2Srpf035Iel3S/pDeVil/SbEn3SnpK0p2S3p55rOyxJG0n6dr0tb8DJpT5UZ3NkAYBeBfwl4i4PT3ezpJ+l/7s7pY0q0zcH05/vo+lP++tM4/9W+Y4/5T0ufT+7JDWdem/A+nP+XXp83fNHGcLSaskTRxy7udIGpC0S+a+ielzt5A0QdKv0uc8JukPhd9PNbLDZJJeL2mJpM9KeljSg5JmSnqzpHvS83wu89phmd/to5Lmpg2wtYAbhD4laRuSb7kL0rt+CiwBtgbeCfyXpH3Sx04DTouIzYAXAnOHHi8ijgf+AByZflM8sshpvwOMA7YHXge8Fzg88/gewN0kH9AnA2dKUom3cC9JAzQO+BJwrqStch7rfGB++thXgPeVOAfAxcAESXtm7nsPcA6ApDHA79JjbgEcAnxf0r8NPZCkvYGTgFnAViTDUT9LH9sUuBL4LcnvYAeS3slQr03/HZ/+nK9Nj3FY5jmHAFdGxPLsCyPiGeCi9PGCWcC1EfEw8GmSv4GJJEOLn2P9UFA9tgRGAZOAE4AfpfG+nOR3eILW55k+Acwk+fvYGngc+F4DYrA8IsKXPrkAi4AVwADJh9H3gdHANiR5hU0zzz0J+HF6/TqSD90JQ443leQDY0R6+xrgQ0OeEyQfbsOBZ4CXZB77CHBNev39wN8zjz03fe2WOd/bQuDASscCpgCrgTGZx88nyX2UOvYZwOnp9R2BZ4Et0tsHA38Y8vwfAl9Mr/8Y+Gp6/Uzg5MzzxgKD6c/xEGBBifOfWIhv6M88vW8PYDEwLL09D5hV4lj7Avdlbt8AvDe9/mXgUmCHKv6mYujzh7zn1wOrgOHp7U3T1+yRef58YGZ6/S5gn8xjW6U/oxF5Y/Kl9ot7CP1nZkSMj4htI+JjEbGK5JvYYxHxVOZ5D5B8owP4IPAi4K+Sbpb01hrOOwHYJD1usXMAPFS4EhEr06tFk9KS3itpYTq8MUAy9JUd+il1rK2BxyPi6SFxlHM2MEvSKJLewW8j+UYNsC2wRyGONJZDSRqfobbOniuSZP6jJD+DbUh6PVWLiD+TTBJ4naSdSRrgX5R4+tXAaEl7SNoW2J2kFwRwCvB34ApJ90maXUs8RTwaEWvS66vSf/+ZeXwV63/P2wIXZ36Wd5F8WXlBg2KxMjzLyACWAZtL2jTTKEwBlgJExN+AQ9Lx5IOACyU9v8hxyg0vPELyTW9b1s9SWXeOaqQfZD8C9gH+FBFrJC0ESg0vZT0IPE/SmEyjMKVc7BHxB0mPAgeSDHV8NvPwYpIhlzfkOPcykvdfeB9jgOeT/AwWs+FQTslwStx/dhrbQ8CFEfGvoi+OWCtpbnqufwK/KvzO038/DXw6HfL6vaSbI6LY0FWzLAY+EBE3tPCclnIPwYiIxcAfgZMkjZK0G0mv4DwASYdJmhgRa0mGmyD51jbUP0nyA8XOsYYk9/A1SZumH+rHALXM/x9D8sG4PI3vcNLkeCUR8QDJkMqXJG2S5gbeluOl5wBfB8YDv8zc/yvgRZLeI2lkenmFpBcXOcb5wOGSdpf0HOC/gD9HxKL0OFtKOjpN/m4qaY8ix1gOrGXjn/NPgLeTNArnVHgv55MMdR2aXgdA0lsl7ZDmWp4k+R0X+z030w9I/ka2TWOaKOnAFsfQt9wgWMEhJOPTy0iGEL4YEb9LH9sf+IukFSQJ5neV+AZ6GvBOJTN7vl3k8aNIhjbuA64n+TA6q9pAI+JO4BvAn0gaoV1JxsLzejfJuPtjwBep/AFK+pwpwAWRJGcLsTwFvJFk5tEykm/oXweeUyTuq4AvAD8n6am8MH1d4ThvIGmcHgL+BuxV5Bgrga8BN6TDKq9K718C3ELSUJad+pkZYtqaZKZZwY4kie0VJD/b70fENeWO1QSnkQx3XSHpKeBGkt+VtYAivEGOWS+QdBawLCK8tsRq4hyCWQ9QsoL5IGBaeyOxbuYhI7MuJ+krwB3AKRFxf7vjse7lISMzMwPcQzAzs1RX5RAmTJgQU6dObXcYZmZdZf78+Y9ExMRKz+uqBmHq1KnMmzev3WGYmXUVSZVW4wMeMjIzs5QbBDMzA9wgmJlZyg2CmZkBbhDMzCzV9gZB0nBJCyT9qt2xmJn1s7Y3CMAnSTbBMDOzNmrrOgRJk4G3kJTzPaadsZiZlXXbXLjqy/DEEhg3GXZ8I/ztiuT26Oclz1n1+IbXx02GfU6A3Wa1L+4qtHth2rdIdp/atNQTJB0BHAEwZcqUFoVlZpZx21z45SdgMN0B9InFMO/M9Y+veqz49ScWJ6+DrmgU2jZklO7L+3BEzC/3vIg4PSKmR8T0iRMrrrw2M2u8q768vjGo1uCq5PVdoJ05hBnAAZIWAT8D9pZUy3aKZmbN9cSS9r6+RdrWIETEcRExOSKmkmwjeHVEHNaueMzMNnLbXDh1F5KdSeswbnJDwmm2ducQzMw609C8Qa1Gjk4Sy12gE6adEhHXRMRb2x2Hmdk65fIG47aB6R9M/kUwevPkMvT6uG3gbd/uioQyuIdgZrahddNLF5d4guBTd7Q0pFZxg2BmVpBnmKhL8gG16IghIzOzjlBpemkX5QNq4QbBzKyg3PTQLssH1MJDRmZmhbxBqeml47bp2bxBlhsEM+tvlfIG9QwTDa1/1OF1jdwgmFl/qzS9tNYP8WL1jzq8rpFzCGbW30rmDdLppbV+eBdraDq8rlGuHoKk5wFbA6uARRGxtqlRmZk1U3YoR8Mg1mz8nHqnl5ZqaDq4rlHJBkHSOODjwCHAJsByYBTwAkk3At+PiN+3JEozs0YZOpRTrDFoxPTScZOLL27r4HUM5YaMLgQWA6+JiJ0iYs+0DPU2wBzgQEkfbEmUZmaNUipnoOE0tNzEPickDUtWh69jKNlDiIg3lHlsPlB2HwMzs45SqSRFrIUTBxp3vkKD0kuzjCQJOBTYPiK+LGkKsGVE3NT06MzMGqFdJSl2m9XRDcBQeWYZfR94NUkuAeAp4HtNi8jMrNH6vCRFXnlmGe0RES+TtAAgIh6XtEmT4zIza5xKJSk6fCinVfI0CIOShpOu6ZY0EfC0UzPrfC5JUZU8DcK3gYuBLSR9DXgn8PmmRmVmVq9mlqToURUbhIg4T9J8YB9AwMyIuKvpkZmZ1aNZJSnq0eG1jfLMMtoceBj4aea+kREx2MzAzMzqUqkkRat1QW2jPLOMbiFZpXwP8Lf0+v2SbpH08mYGZ2ZWldvmwqm7wInjk5IUxbRrpXAX1DbK0yD8FnhzREyIiOcDbwLmAh8jmZJqZtZ+hW/gTywGonklKWrVBbWN8jQI0yPi8sKNiLgCeG1E3Ag8p2mRmZlVo1UlKWpVqmfSQbWN8swyekzS/wN+lt4+GHg8nYrq6adm1l6tLklRq31O2HjWU4fNdMrTQ3g3MBm4BLgUmJLeNxzojEyImfWnDYaJSuiUb+C7zUp6KOO2oSN6LEXkmXb6CHBUiYf/3thwzMyq0G0lKTq8tlGeaacvAj4DTM0+PyL2bl5YZmY5uCRFQ+XJIfwf8APgDKBI2t7MrMVckqIp8jQIqyPif5oeiZlZHi5J0TR5ksq/lPQxSVtJ2rxwaXpkZmbFVCpJ0WGJ2m6Sp4fwvvTfYzP3BbB948MxM6ug00pS9JA8s4y2a0UgZmZlVcwbdMj00rw6sNBdnh4CknYBXgKMKtwXEefUc2JJ2wDnAFuSLHA7PSJOq+eYZtajei1v0KGF7irmECR9EfhOetkLOBk4oAHnXg18OiJeDLwK+LiklzTguGbWa3otb9Chhe7y9BDeCbwUWBARh0t6AckU1LpExIPAg+n1pyTdBUwC7qz32GbWA7JDKqWGibo1b9Chhe7yzDJaFRFrgdWSNiPZG6GhCWVJU4FpwJ+LPHaEpHmS5i1fvryRpzWzTjW0cmkp3ZY3KOjQQnd5GoR5ksYDPwLmk+yPcFOjApA0Fvg5cHREPDn08Yg4PSKmR8T0iRMnNuq0ZtbJKpWkgO7LG2Ttc0ISf1YHvJ+yQ0aSBJwUEQPADyT9FtgsIm5rxMkljSRpDM6LiIsacUwz6wFlh07UMbNyalaIu5tmGUVESLoEeHl6e1GjTpw2NmcCd0XENxt1XDPrYv1UkqIDC93lGTK6UdIrmnDuGcB7gL0lLUwvb27CecysG1QqZd0BQyq9Ls8so72Aj0h6AHgaEEnnYbd6ThwR16fHMjOrPLW0A4ZUel2eBuFNTY/CzMwlKdqu4pBRRDwAjAfell7Gp/eZmdXvtrlw6i70TEmKLpZnpfIngfOALdLLuZJK7aBmZpaf8waJQqN44vjk39vmtiWMPENGHwT2iIinASR9HfgTSSkLM7PaOW/QUXWN8swyEhvulLYGJ4PNrB6Fb8SlegaFvEGvNwbQUXWN8vQQ/hf4s6SL09szSdYPmJlVr1LlUuivvEEH1TXKsx/CNyVdA+xJ0jM4PCIWNDswM+tRlcpS9EveoGDc5OI9pTY0iiUbBEljI2IFQETcQlLDqORzzMxyKffNt1/yBln7nLBxj6lNjWK5HsKlkhYClwLzM0nl7UkWq80iKXh3YdOjNLPuli1lrWEQazZ+Ti+VpahGB9U1KtkgRMQ+aSmJjwAzJG0ODAJ3A5cB74uIh1oTppl1raE5g2KNQb8NEw3VIXWNKhW3+zXw6xbFYma9qFTOQMMh1nZMpU/LuaeymVnV1g0TlZhaGmvhxIHWxmRluUEws8bz1NKulGdhmplZdTy1tCuVm3a6ebkXRsRjjQ/HzHqCp5bWJzsrq4U5lnJDRvNJyg8KmAI8nl4fD/wD2K7p0ZlZd+mnHc+apY21jUoOGUXEdhGxPXA58LaImBARzwfeCnj/YzPbkCuXNkYbaxvlySG8Ip1+CkBE/AZ4XfNCMrOuVKly6du+7WGiPNpY2yjPLKNHJH0eOJekH3gY8GhTozKz7uMdzxqjjbWN8vQQDgEmAhenl4npfWZm3vGs0fY5IRley2rRcFueaqePAZ90ITsz20il9QbOG1SvjbWNKjYIkv4dOAMYC0yR9FLgIxHxsWYHZ2YdzjueNUebahvlySGcCuwH/AIgIm6V9NqmRmVmnSs7R77UMJHzBl0pV+mKiFgsbbBrZpFyhWbW8/KUpADnDbpUngZhcTpsFJI2AT4B3NXcsMysI1UqSQHOG3SxPLOMPgp8HJgELAF2T2+bWb8pOxdeXm/Q5fLMMnoEOLQFsZhZp3JJir5QsYcg6UWSrpJ0R3p7t3Shmpn1A5ek6Bt5hox+BBxHsn0mEXEb8K5mBmVmHcQlKfpGnqTycyPipiGzjFY3KR4z6zQuSdE38vQQHpH0QtLBQ0nvBB5salRm1n4uSdF38vQQPg6cDuwsaSlwPw1KMkvaHzgNGA6cERFzGnHcoS5ZsJRTLr+bZQOreNeoGzmK89kyHuEhTeA7vJuf/etVjBs9EgkGVg6y9fjRHLvfTsycNqkZ4Zh1Ppek6EuKKLXScMgTpTHAsIh4qiEnloYD9wBvIJnOejNwSETcWeo106dPj3nz5lV1nksWLOW4i25n1eAaDhh2PXNGnsFz9ey6x1fGJswe/BC/WLvnBq8bOUyMHTWCgZWDbiys/5y6S+kksktSdB1J8yNiesXnVWoQJD0f+CKwJ0nf8XrgyxFRVwlsSa8GToyI/dLbxwFExEmlXlNLgzBjztUsHUi+5Vy/ySeYPOyRjZ4TAUtjAievnrVRw1A0dpIfxCQ3DtZL8pakOHGglVFZA+RtEPIMGf0MuA54R3r7UOACYN/awwOShW7ZryBLgD2GPknSEcARAFOmTKn6JMsG1nd5t9bGjUFyDpisR5gz8gwYpGKjUPivsnRgFcf+36186Zd/ce/BuptLUhj5ksqbR8RXIuL+9PJVkn2V66Ui9230tSQiTo+I6RExfeLEiVWfZOvx6+uKL4sJZZ/7XD3LZ0fMrer4g2uDx1cOEiQNxKcuWMjU2ZcxY87VXLJgadXxmrWFS1IY+RqE30t6l6Rh6WUWcFkDzr0E2CZzezKwrAHH3cCx++3E6JHDATh59SxWxiZlnz9Jj3D9Jp/ggGHX13S+bO/BjYN1DZekMPINGX0EOIZkC01IGpGnJR0DRERsVuO5bwZ2lLQdsJRksdu7azxWSYXhm1Muv5tfDuzJGI3gKM5nq3gEFemjVDt8VE62cTjuots3iMesI7gkhWXknmXUlJNLbwa+RTLt9KyI+Fq559eSVC4px5jpaoYxLNaum57603+9al1CuVZORFvHyDO11L2CnlD3LCNJ2wIDEfFEensvYCawCPheRDxb9IVN1NAGATKzKkpMr8tK/3NcsmbGujUN40aP5OlnVzO4promIjul1YloaxtPLe0bjWgQ/gy8PSKWSdoduBI4CdgNGIyIDzUy4Dwa3iAUlPuPkVWk+1xY9LZ0YFXNvYfRI4dz0kG7ulGw1jpxPMX/Yj21tNfkbRDKJZVHR0QhyXsYyZDON4DDgVc2IMbOsc8JSQ+gkicWJ43HbetnIs2cNokbZu/Nojlv4dSDd2dSOqup2BSqUlYNruHoCxY6+Wyt4ZIUVkK5pHL2M21vkoqnRMRaFcvGdrNCt7iwKEfDIErsEvrE4mTcNfu61Mxpk9Z9y8/2HPJy8tmaziUprIxyQ0anAVuRFLI7AHhRRAxK2gr4ZZ7uR6M1bchoqNyLdCqPs2ZLZ1TDyWdrCucN+lIjViofDRxM0ijsGRGD6f1bAsfXH2IH26DHUCa3UKa3UJCd9lpNItq9BWuoihMoXMra2jzttFot6yFk5Uk4VzlXu9rhJPcWrC55erxeb9DTGpFUNsiXcH5icTJjY0jCuZRCIvpbB+++bhV1OYXeghPOVpNKZSmcN7CUG4RKdpuVLM4Zt02FJ8b6IaQcjQIkDcNJB+26bmZSOasG1/DpubeynUthWLXKlaVwSQrL8JBRNfImm6HqBF21yWevXbCysqWsS82a8zBR36g7qSzpdsqss4qI3WqMrXsNnZ5abhlajoRzVjb5nCe3UFi7cMrldzu/YBsa+sWlWGPgYSIrolLpCki20AT4SfrvocDKiPhyk2PbSNt7CENVs8LZvQVrlVJ/lxoOsTZZeObppX2l7h5CRDyQHmhGRMzIPDRb0g1AyxuEjrPPCfmGkOroLSwbWMUwiTVlhvZWDa7hlMvvdoNgiVI5g1jrkhRWVp6k8hhJ62pAS/p3YEzzQuoiuRPOJI3GVfnb0MJMpPvnvIVvzHppxdlISwdWOdnc71ySwuqUp0H4IPA9SYskLQK+D3ygqVF1k91mJYm5g36Ub3pqzqmpWXlnI3l6ah8r5A1KDWE6Z2A55J5lJGmz9PlPNDek0jouhzBU3nLaddSZz5NfGC6xNsKltfuJS1JYGXWXv84c6DnAO4CpZHIOTiqXkWd6ah0JvmpWOjvh3OPylKRw3qDvNXKl8qXAgcBq4OnMxUrJk1uINdSymA3W5xfyLmg75fK7cx/bukilYSJw3sCqkqdBmBwRB0fEyRHxjcKl6ZF1u0JuoQkJ54Jj99spd+kLJ5x7kEtSWIPlaRD+KGnXpkfSq+rYfKeSbLJZJLmDUpxw7kEuSWENlieHcCewA3A/8AzJxjnRjpXKXZNDGCpPGYGCJiecwdVTu16lvIFLUtgQjUwqb1vs/sLCtVbq2gYhq4Gb7xSTN+HsZHOXyrPjmXsGNkTDksoR8UD64b+KZMVL4WK1yLuYrYZkM+RPOHsf5y5VLm/gYSKrU8UGQdIBkv5GMmR0LbAI+E2T4+pteRPONSabobqEs3MLXaRk3iDd8cyNgdUhT1L5K8CrgHsiYjtgH+CGpkbVL/JuvtPE1c3gqakdr1CS4sTxSQ6qGE8vtQbI0yAMRsSjwDBJwyLi98DuTY6rP7Ro+CjPzmxLB1Z5851OtMFag3Apa2uqPA3CgKSxwHXAeZJOI1mkZo2QtxbS4Cq4+KNVbdVZkLe3EHgIqeOUyhloOCDnDayh8swyGkOSUB5GshfCOOC8tNfQUj0xy6icvLWQoObZJNXsteDpqW3kkhTWQA2bdtpJer5BKMi78Q7UND21MDV12cCqitPFPD21DfJMTfZag56W/T/aiCKVdW+QY22Ud+MdqHrzHUiGkAp/XDPmXF12zYI332kDl6ToO9kGYNzokTz97GoG1yRf1wrDuEDT/x/mySFYq22QbFY6XlxGk6enuhZSi7kkRV8pDOMuTXvsA6sG1zUGBa2aCegho25QzermHd8If7si+VAZ/bzk/lWPl74+bjL3jp/BmAeuYotYzuMxFgnGs6LIdfE8rUDjJtd0nlyvaeaxuyYel6ToB9WUsYekZtD9c95S07kakkOQ9GrgMOA1wFYkyeU7gMuAc2vdLEfSKcDbgGeBe4HDI6JihqxvGwSoLuHcAkHyB2ot4pIUPaWayR0Fk8aP5obZe9d0vrpLV0j6DfAh4HJgf5IG4SXA54FRwKWSDqgpOvgdsEtaIO8e4Lgaj9M/qtmqswXcGLSQh4l6xiULljJjztUcfcHCqhqD0SOHc+x+OzUxskS5pPJ7IuKRIfetAG5JL9+QNKGWk0bEFZmbNwLvrOU4fanwodBBvQVrJnmYqEdU0ysYOUyMHTWCgZWDLd0Kt2SDkG0M0oqnO0bElZJGAyMi4qkiDUYtPgBcUOpBSUcARwBMmTKlAafrAbvNSi7VTE+17uSSFD3jlMvv7vj1P3mK230YuBD4YXrXZOCSHK+7UtIdRS4HZp5zPMmq5/NKHSciTo+I6RExfeLEiZVO21/ybr7TBF00F6F7eXppT1mWoyT9tw7enRtm7922ad55pp1+HJgBPAkQEX8Dtqj0oojYNyJ2KXK5FEDS+4C3AodGN0116iRDp6eO2wamf3D97dGbJ5dy13O8JhCPxVgei7GsDbFk7QTOWbMvS9ZOYG2IR9euf2yATXlm5PiaztPM99B18Thv0BMKOYPtZl/GsDI7Gk4aP7ojFoDmWZj2TEQ8q/TNSBpBnfshSNof+H/A6yJiZT3H6nuF4aMmEnBdkdXNXyzx/NFrvLrZbGjOYE2R772dVgkgTy2jk4EB4L3AUcDHgDsj4viaTyr9HXgOUKiHdGNEfLTS6/p62mkHqbS6ucC1kKyflfp/MlxibURLk8WNLF0xG/ggcDvwEeDXwBn1BBcRO9TzemuvY/fbKddsiVYuuTfrNKVyBmsjal5g1mwVG4SIWAv8KL2Yrftwz7PK0rWQrN8UViCXGnvZOsemVe2SZ5bR/ZLuG3ppRXDWuardfMe1kKwfZOsSFdOqBWa1yjNklB13GgX8B7B5c8KxbpO3t+DhI+sH5dYadENOrabidpKuj4g9mxBPWU4qd7Y8KzHbkVAza5XtZl9WdKionsJ0jdCwpLKkl2VuDiPpMWxaR2zWo/L0FgpT79xjsF609fjRRf/2OzlvkJVnyOgbmeurgUWAV8tYUYXNd/JMTXXC2XpFtpS12HChVqfnDbIqJpUjYq/M5Q0R8eGIaP5ODdbV8my8A044W/cbmkjOlobvlBXIeZXsIUg6ptwLI+KbjQ/HekV2+GjZwCqGSUVXaoKHj6y7FUskB/XtX9Au5YaMnCewumT3bq6UcF41uIajL1jIKZff7WSzdZVSC9AqFbPrROXKX3+plYFYb/P0VOs13bwArZQ8C9O2l/RLScslPSzpUknbtyI46y2FxWyTKvxHadWG4ma16vYFaKXkKX99PjCXZAvNrYH/A37azKCst+VJOC8dWMV2sy9zwtk6UqUFaN2USM7KM+1UEfGTzO1zJR3ZrICs9+UdPgo8hGSdqVR+QNB1ieSskj0ESZtL2hz4vaTZkqZK2lbSZ4HLWhei9aJqaiEVEs7uLVinKJUf6Ma8QVa5HsJ8NpxS+5HMYwF8pVlBWf8YOj21XCEV9xasnS7JbBI1bvRIRg4Xg2vW/8V2a94gq6ZaRu3iWka9z5vvWCcqNm165DAxdtQIBlYOdnxtrrprGUnaMyKuL/P4ZsCUiLijxhjNNuLNd6wTFUsiD64NnrvJCBac8MY2RdV45YaM3pFun/lbkuGj5STlr3cA9gK2BT7d9Aitr3jzHetEvbT4rJySSeWI+BTwFuBBkj0QvgIcA+wI/DAiXhsRN7ckSusr3nzHOk2vJpGHKjvtNCIex9tnWpt4dbO1W69UMc3LSWXrCt58x1qt2N9coVHotkkNDdsgx6wTePMda7VeqmKaV57SFWYdIW8tJHA9JKtfvySSs3I1CJL+XdK7Jb23cGl2YGalePMda4V+SSRn5dlT+SfAC4GFQKH/FMA5TYzLrCRvvmPN1G+J5KyKSWVJdwEviQ7IPjupbMXkSThD9yUCrfV6KZGc1cik8h3AliTrEcw6jqdRgz5kAAANuklEQVSnWqP0YyI5K08OYQJwp6TLJf2icGl2YGbV8OY71gj9mEjOytNDOLHZQZg1Sp5aSIVkc7d2/63xenE7zFpUbBAi4lpJLwBekd51U0Q83NywzGrj4SOrVqUcVK8nkrPyJJVnAacA15DkV14DHBsRF9Z9cukz6bEnRsQjlZ7vpLJVw6ubLY9yJde7OZGc1cik8vHAKwq9AkkTgSuBuhoESdsAbwD+Uc9xzErx6mbLo1e3w6xFnqTysCFDRI/mfF0lpwKfhbKbZJnVxaubrZhLFixlxpyr2W72ZQyTij6nX/IGWXk+2H+bzjB6v6T3k+yn/Ot6TirpAGBpRNya47lHSJonad7y5cvrOa31Ma9utoLCUOLSdMvWYosa+ylvkJUnqXyspHcAM0h6UadHxMWVXifpSpL1C0MdD3wOyLXNUEScDpwOSQ4hz2vMhvLqZisottYAnE+CNpS/lrQrcBWwMr1rMrAMeGVEPFTutU4qW6N4dXP/2m72ZUXHqQXcP+ctrQ6nJRqxp/L1EbGnpKfYcJxfQETEZrUEFhG3A1tkzrMImJ5nlpFZo3h6av/xWoPK2r5BTjUNgnsI1gzlph0WeDihu+VZa3DSQbv27O81bw+hYlI5rXZa8b5aRcRU9w6snfIknNdEEKzvMTjp3F1K5Q0gGRbs5cagGnnWIfxb9oakEcDLmxOOWevlHT4qKExP9QdI9/Bag3xK9hAkHZfmD3aT9GR6eQr4J3BpyyI0a4HCeoVvHby7p6f2kMJ6A+cN8inZQ4iIk4CTJJ0UEce1MCaztvH01N7hGkXVK5lUlrRzRPxV0suKPR4RtzQ1siKcVLZW8/TU7tUPNYryakQto2OAI4BvFHksAA+8Wc/z9NTu5bxB9coNGR2R/rtX68Ix6zwzp01i5rRJFaenOtncfoW1BuWG+5w3KC3PtNP/kLRpev3zki6SNK35oZl1ljzTU51sbh/XKKpfnuJ2X4iIpyTtCewHnA38oLlhmXWemdMmcdJBu1asnOq1Cu1RrkaR8HqDPPJskLMgIqZJOgm4PSLOL9zXmhDXc1LZOoU33+kchWGiUsN5vVyjKK9GbpCzVNIPgX2Br0t6Do3ZD8Gsa3nznc6Qp2F2ziC/PB/ss4DLgf0jYgDYHDi2qVGZdQFvvtN+5UpSgHMG1arYIETESuBeYD9JRwJbRMQVTY/MrEt4853WK6xALjfryzmD6lUcMpL0SeDDwEXpXedKOj0ivtPUyMy6hFc3t1aeYaJJ40d7rUEN8iSVbwNeHRFPp7fHAH+KiN1aEN8GnFS2buDVzc1VqWfQ66Wsa9HIpLKA7F/2mvQ+MyvCq5ubo9JsInAjW688PYRjgPcBhX2UZwI/johvNTm2jbiHYN0mz+Y74A+ySjxMVJ+G9RAi4puSrgH2JOkZHB4RC+oP0az3HbvfTrmGj9xb2FieMhQFnk3UGOX2VB4FfBTYAbgd+H5ErG5VYGa9oJrNd1wLab2hPYJyjYF7V41Trvz1BcAg8AfgTcCiiDi6hbFtxENG1s3yJpsFfb+6uZqhNg8TVdaIIaOXRMSu6cHOBG5qVHBm/ShvbyG7d3P2df0gT+K4wMNEjVduYdpg4YqHiswao5qtOlcNruHoCxb2zWK2bLXSUlyorrnK9RBeKunJ9LqA0eltARERmzU9OrMeNXQxW7m5fr3eW8jbK/D6guarOO20kziHYL2qX6enehFfazRyYZqZNVm/TU+tJlfgxHHruEEw6wDVTk/99Nxb+dQFC7tmNlJ2TcG40SN5+tnVDK6pPDrhxHFrecjIrMPkHUYpEMnMpE4dVqn2/RR06vvpRh4yMutS1fQWgHUJ6U4bTqpmWCjLyeP2cQ/BrIN127frbCNQ6LlUw72C5sjbQ3CDYNbhqqnpk9WqoaR6GwFwr6DZ3CCY9aBaewwjh4mxo0YwsHKQcaNHIrHR9XIJ6qFJ4ezr8yaIS8XTLYnxbuYGwaxHNeIbeSnZXsVeO0/k939d3vDzeFio9Tq+QZB0FHAksBq4LCI+W+k1bhDMNlRr4rYdPCzUPh09y0jSXsCBwG4R8YykLdoRh1m3mzltEjOnTap5KKnZOn1KrG2oXdNO/xOYExHPAETEw22Kw6wnDJ2q2uihpGq4EehebRkykrQQuBTYH/gX8JmIuLnEc48AjgCYMmXKyx944IGWxWnWrWpdGVwLJ4g7X9tzCJKuBLYs8tDxwNeAq4FPAq8ALgC2jwrBOIdgVptys4QkeHzlYMVeReHx8TlnJlnnaHsOISL2LfWYpP8ELkobgJskrQUmAMubFY9ZPyvkGsrJNhpbZ2YZFW77g7/3tSuHcAmwN3CNpBcBmwCPtCkWMyNfo2G9rV0NwlnAWZLuAJ4F3ldpuMjMzJqrLQ1CRDwLHNaOc5uZWXHl9lQ2M7M+4gbBzMwANwhmZpbqquJ2kpYD9axMm0BvzWby++l8vfae/H46X7H3tG1ETKz0wq5qEOolaV6exRndwu+n8/Xae/L76Xz1vCcPGZmZGeAGwczMUv3WIJze7gAazO+n8/Xae/L76Xw1v6e+yiGYmVlp/dZDMDOzEtwgmJkZ0CcNgqT9Jd0t6e+SZrc7nnpJOkvSw2lxwK4naRtJv5d0l6S/SPpku2Oqh6RRkm6SdGv6fr7U7pgaQdJwSQsk/ardsTSCpEWSbpe0UFLXb7QiabykCyX9Nf2/9Oqqj9HrOQRJw4F7gDcAS4CbgUMi4s62BlYHSa8FVgDnRMQu7Y6nXpK2AraKiFskbQrMB2Z26+9IkoAxEbFC0kjgeuCTEXFjm0Ori6RjgOnAZhHx1nbHUy9Ji4DpEdETC9MknQ38ISLOkLQJ8NyIGKjmGP3QQ3gl8PeIuC+tsvoz4MA2x1SXiLgOeKzdcTRKRDwYEbek158C7gK6tjB/JFakN0eml67+5iVpMvAW4Ix2x2Ibk7QZ8FrgTEgqSlfbGEB/NAiTgMWZ20vo4g+bXidpKjAN+HN7I6lPOryyEHgY+F1EdPX7Ab4FfBZY2+5AGiiAKyTNT/du72bbk+w4+b/psN4ZksZUe5B+aBBU5L6u/rbWqySNBX4OHB0RT7Y7nnpExJqI2B2YDLxSUtcO7Ul6K/BwRMxvdywNNiMiXga8Cfh4OhTbrUYALwP+JyKmAU8DVedL+6FBWAJsk7k9GVjWplishHSs/efAeRFxUbvjaZS0234NsH+bQ6nHDOCAdMz9Z8Deks5tb0j1i4hl6b8PAxeTDC93qyXAkkxP9EKSBqIq/dAg3AzsKGm7NNHyLuAXbY7JMtIk7JnAXRHxzXbHUy9JEyWNT6+PBvYF/treqGoXEcdFxOSImEry/+fqiOjqHQ8ljUknMJAOrbwR6NpZexHxELBY0k7pXfsAVU/KaNeeyi0TEaslHQlcDgwHzoqIv7Q5rLpI+inwemCCpCXAFyPizPZGVZcZwHuA29Nxd4DPRcSv2xhTPbYCzk5nuA0D5kZET0zV7CEvAC5OvoswAjg/In7b3pDqdhRwXvrF9z7g8GoP0PPTTs3MLJ9+GDIyM7Mc3CCYmRngBsHMzFJuEMzMDHCDYGZmKTcI1lUkPT+tTrlQ0kOSlmZu/7FJ55wmqWNq+Ej6saR3lnn8SElVTzk06/l1CNZbIuJRYHcASScCKyLiv5t82s8BX23yORrpLOAG4H/bHYh1F/cQrGdIWpH++3pJ10qaK+keSXMkHZruUXC7pBemz5so6eeSbk4vM4occ1Ngt4i4Nb39ukyPZEFmteux6TFuy+5/IOm96X23SvpJet+2kq5K779K0pT0/h9L+rakP0q6r9ALUOK7ku6UdBmwReb4c9L7b5P03wARsRJYJKmbSzFYG7iHYL3qpcCLScqE3wecERGvVLL5zlHA0cBpwKkRcX36oXx5+pqs6WxY0uAzwMcj4oa0GN+/JL0R2JGkFo6AX6SF0h4FjicpovaIpM3TY3yXZC+LsyV9APg2MDN9bCtgT2BnkhIrFwJvB3YCdiVZYXsncFZ6vLcDO0dEFMplpOYBrwFuquWHZ/3JDYL1qpsj4kEASfcCV6T33w7slV7fF3hJWr4AYDNJm6Z7MhRsRVJWuOAG4JuSzgMuioglaYPwRmBB+pyxJA3ES4ELCxuwRERhD4tXAwel138CnJw5/iURsRa4U9IL0vteC/w0ItYAyyRdnd7/JPAv4Iy055Atj/EwSaNilpuHjKxXPZO5vjZzey3rvwgNA14dEbunl0lDGgOAVcCowo2ImAN8CBgN3ChpZ5JewUmZ4+yQ1pYS+UqtZ5+TjVslnlOIZTVJr+TnJD2MbC2eUWnsZrm5QbB+dgVwZOGGpN2LPOcuYIfMc14YEbdHxNdJhmV2Jhlq+kA6hISkSZK2AK4CZkl6fnp/YcjojyRVQwEOJdlis5zrgHelm+5sRdrDSc83Li0CeDRpsj31Irq4eqe1h4eMrJ99AviepNtI/i9cB3w0+4SI+KukcZmhpKMl7QWsIRnL/01EPCPpxcCf0uGnFcBhEfEXSV8DrpW0hmRI6f3pec+SdCzJcFSlKaIXA3uTDHfdA1yb3r8pcKmkUSS9iU9lXjMD+BJmVXC1U7MKJH0KeCoiOmYtQjmSpgHHRMR72h2LdRcPGZlV9j9sOLbf6SYAX2h3ENZ93EMwMzPAPQQzM0u5QTAzM8ANgpmZpdwgmJkZ4AbBzMxS/x998NdqiPsBngAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# load the parallel park data\n",
    "PARALLEL_PARK_DATA = process_data(\"parallel_park.pickle\")\n",
    "\n",
    "# get the relevant columns\n",
    "timestamps    = [row[0] for row in PARALLEL_PARK_DATA]\n",
    "displacements = [row[1] for row in PARALLEL_PARK_DATA]\n",
    "\n",
    "# calculate first derivative\n",
    "speeds = solution_derivative(displacements, timestamps)\n",
    "\n",
    "# plot\n",
    "plt.title(\"Position and Velocity vs Time\")\n",
    "plt.xlabel(\"Time (seconds)\")\n",
    "plt.ylabel(\"Position (blue) and Speed (orange)\")\n",
    "plt.scatter(timestamps, displacements)\n",
    "plt.scatter(timestamps[1:], speeds)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "但你刚才也看到了，加速度是速度的导数......这意味着我们可以使用相同的微分函数来计算加速度！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# calculate SECOND derivative \n",
    "accelerations = solution_derivative(speeds, timestamps[1:])\n",
    "\n",
    "# plot (note the slicing of timestamps from 2 --> end)\n",
    "plt.scatter(timestamps[2:], accelerations)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "正如你所看到的，这个平行泊车运动由四个不同（但恒定）加速度的段组成。 我们可以像这样一次将所有的三个数量绘制成图："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"x(t), v(t), a(t)\")\n",
    "plt.xlabel(\"Time (seconds)\")\n",
    "plt.ylabel(\"x (blue), v (orange), a (green)\")\n",
    "plt.scatter(timestamps, displacements)\n",
    "plt.scatter(timestamps[1:], speeds)\n",
    "plt.scatter(timestamps[2:], accelerations)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "----\n",
    "\n",
    "## 第2部分 - 亲自尝试一下吧！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_derivative_from_data(position_data, time_data):\n",
    "    # TODO - try your best to implement this code yourself!\n",
    "    #        if you get really stuck feel free to go back\n",
    "    #        to the previous notebook for a hint.\n",
    "    return "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "x and y must be the same size",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-6-09fef34aae58>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      7\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Position (blue) and Speed (orange)\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      8\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimestamps\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisplacements\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtimestamps\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mspeeds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     10\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/tools/conda3/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mscatter\u001b[0;34m(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, hold, data, **kwargs)\u001b[0m\n\u001b[1;32m   3468\u001b[0m                          \u001b[0mvmin\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvmin\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvmax\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvmax\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malpha\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0malpha\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   3469\u001b[0m                          \u001b[0mlinewidths\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlinewidths\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverts\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mverts\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3470\u001b[0;31m                          edgecolors=edgecolors, data=data, **kwargs)\n\u001b[0m\u001b[1;32m   3471\u001b[0m     \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   3472\u001b[0m         \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_hold\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwashold\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/tools/conda3/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1853\u001b[0m                         \u001b[0;34m\"the Matplotlib list!)\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlabel_namer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1854\u001b[0m                         RuntimeWarning, stacklevel=2)\n\u001b[0;32m-> 1855\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1856\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1857\u001b[0m         inner.__doc__ = _add_data_doc(inner.__doc__,\n",
      "\u001b[0;32m~/tools/conda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mscatter\u001b[0;34m(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, **kwargs)\u001b[0m\n\u001b[1;32m   4241\u001b[0m         \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mravel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   4242\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4243\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"x and y must be the same size\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   4244\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   4245\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0ms\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mValueError\u001b[0m: x and y must be the same size"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Testing part 1 - visual testing of first derivative\n",
    "#   compare this output to the corresponding graph above.\n",
    "speeds = get_derivative_from_data(displacements, timestamps)\n",
    "\n",
    "plt.title(\"Position and Velocity vs Time\")\n",
    "plt.xlabel(\"Time (seconds)\")\n",
    "plt.ylabel(\"Position (blue) and Speed (orange)\")\n",
    "plt.scatter(timestamps, displacements)\n",
    "plt.scatter(timestamps[1:], speeds)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Testing part 2 - visual testing of second derivative\n",
    "#   compare this output to the corresponding graph above.\n",
    "speeds = get_derivative_from_data(displacements, timestamps)\n",
    "accelerations = get_derivative_from_data(speeds, timestamps[1:])\n",
    "\n",
    "plt.title(\"x(t), v(t), a(t)\")\n",
    "plt.xlabel(\"Time (seconds)\")\n",
    "plt.ylabel(\"x (blue), v (orange), a (green)\")\n",
    "plt.scatter(timestamps, displacements)\n",
    "plt.scatter(timestamps[1:], speeds)\n",
    "plt.scatter(timestamps[2:], accelerations)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
